home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / amos / PrgCollection.lha / LameSineCurves.AMOS / LameSineCurves.amosSourceCode
Encoding:
AMOS Source Code  |  1994-03-12  |  3.0 KB  |  110 lines

  1. ' *************************************
  2. ' *                                   *
  3. ' *       Lame Sine Curves V1.0       *
  4. ' *      Written by Chris Hodges      *
  5. ' *                                   *
  6. ' *************************************
  7. '
  8. Hide 
  9. Degree 
  10. Dim LG(1),SI(359)
  11. For A=0 To 359
  12.   SI(A)=Int(Sin(A)*128.0+128.0)
  13. Next 
  14. Screen Open 0,320,100,2,0 : Screen Hide 
  15. Curs Off : LG(0)=Logbase(0)
  16. For A=0 To 99
  17.   Draw 129-A,A To 180+A,A
  18. Next 
  19. Screen Open 1,320,200,2,0 : Screen Hide 
  20. Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 0
  21. LG(1)=Logbase(0)
  22. Palette $516,0,0,$222,$FFF,$FFF,$EEE,$EEE
  23. Copper Off 
  24. Cop Reset 
  25. Cop Move $100,$200
  26. Cop Wait $FE,$FF
  27. Cop Swap 
  28. Cop Reset 
  29. AD=Cop Logic
  30. A$= Extension_16_08D2(0)
  31. For A=0 To 7
  32.   Cop Movel $120+A*4,Varptr(A$)
  33. Next 
  34. Cop Move $100,0
  35. Cop Wait $80,$2E
  36. For A=0 To 31
  37.   Cop Move $180+A*2,Colour(A mod 16)
  38. Next 
  39. Cop Movel $108,0 : Rem    BPL1MOD BPL2MOD 
  40. Cop Movel $102, Extension_16_0946(32) : Rem    BPLCON1 BPLCON2   
  41. Cop Move $8E,$3081 : Rem  DIWSTRT   
  42. Cop Move $90,$F0C1 : Rem  DIWSTOP 
  43. Cop Move $92,$38 : Rem    DDFSTRT 
  44. Cop Move $94,$D0 : Rem    DFFSTOP 
  45. 'Cop Movel $E0,LG(0) 
  46. Cop Movel $E4,LG(1)+6*40
  47. Cop Movel $E8,LG(1)+8*40
  48. 'Cop Movel $F0,Lg(4) 
  49. Cop Move $100,$3200 : Rem BLPCON0  
  50. Cop Move $96,$8180 : Rem  DMACON  
  51. S$="**************************************$$"
  52. S$=S$+"Who said, it couldn't be done in AMOS?$"
  53. S$=S$+"Sure, it is slow at the moment, but it$"
  54. S$=S$+"can made so fast to run in one frame! $"
  55. S$=S$+"                                      $"
  56. S$=S$+"Still Assembler is the best, but AMOS $"
  57. S$=S$+"can do it without hours and hours of  $"
  58. S$=S$+"work.                                 $"
  59. S$=S$+"                                      $"
  60. S$=S$+"Keep on coding! ;)                    $$"
  61. S$=S$+"Press any key to quit!!!$$"
  62. S$=S$+"**************************************"
  63. XP=0 : YP=1 : SP=1
  64. P=0 : R1=24 : R2=4 : SP1=-3 : SP2=2
  65. PA=P
  66. For D=0 To 199
  67.   A= Extension_16_093A(SI(PA mod 360)*R1,9)+ Extension_16_093A(SI( Extension_16_093A(PA+180,1) mod 360)*R2,9)
  68.   Cop Wait 10,$30+D
  69.   Cop Movel $E0,LG(0)+A*40
  70.   Cop Move $182,Min( Extension_16_093A(A,2),13)*$101+Max( Extension_16_093A(A,2)-6,0)*$10+$202
  71.   Add PA,3
  72. Next 
  73. Cop Wait 0,$12E
  74. Cop Move $100,0 : Rem     DMACON   
  75. Cop Wait $FE,$FF
  76. Repeat 
  77.   Add AD,2
  78. Until Deek(AD)=$E0
  79. Cop Swap 
  80. Every 3 Gosub WRITE
  81. Every On 
  82. Repeat 
  83.   Wait Vbl 
  84.   PA=P : CA=AD
  85.   For D=0 To 199
  86.     A= Extension_16_093A(SI(PA mod 360)*R1,8)+ Extension_16_093A(SI( Extension_16_093A(PA+180,1) mod 360)*R2,8)
  87.     B=LG(0)+A*40
  88.     Doke CA+2, Extension_16_0946(B)
  89.     Doke CA+6,B
  90.     Doke CA+10,Min( Extension_16_093A(A,2),13)*$101+Max( Extension_16_093A(A,2)-6,0)*$10+$202
  91.     Add CA,16 : Add PA,3
  92.   Next 
  93.   Add P,8
  94.   Add R1,SP1 : If R1+SP1<0 or R1+SP1>49 Then SP1=-SP1
  95.   Add R2,SP2 : If R2+SP2<0 or R2+SP2>49 Then SP2=-SP2
  96. Until Mouse Key or(Inkey$<>"")
  97. Copper On 
  98. End 
  99. WRITE:
  100.   If SP>Len(S$) Then Return 
  101.   P$=Mid$(S$,SP,1)
  102.   If P$="$" Then XP=0 : Inc YP : Inc SP : Goto WRITE
  103.   Locate XP,YP : Print P$;
  104.   Inc XP : Inc SP
  105.   Every On 
  106. Return 
  107. Procedure COPL[ADR,V]
  108.   Doke ADR, Extension_16_0946(V)
  109.   Doke ADR+4,V
  110. End Proc